package com.schedualnew.mq.config;

import com.schedualnew.mq.util.JsonUtil;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;

/**
 * @author ljy aka ryan
 * @date 2024/4/23$ 10:39$
 * @description 自动预约
 */
@Data
public class AutoScheduleProperties {

    /**
     * 同类型申请单多条可自动预约的情况，优先级最高 ，如果满足条件，就直接预约不会执行其他配置条件
     */
    private String afterSaveMultiApply;

    /**
     * 自动预约项目配置
     */
    private String items;
    /**
     * 调用接口地址
     */
    private String url;
    private String userName;
    /**
     * 加密过后的密码
     */
    private String userPwd;
    /**
     * 入库自动预约
     */
    private String afterSave;
    /**
     * 定时自动预约
     */
    private List<String> timerTask;

    /**
     * 定时自动预约时间 corn表达式
     */
    private String timerTaskCorn;


    /**
     * 将自动预约的配置字符串转成配置对象
     *
     * @return
     */
    public List<AutoScheduleConfigItem> getConfigItems() {
        List<AutoScheduleConfigItem> result = new ArrayList<>();
        if (StringUtils.isNotEmpty(getItems())) {
            result = JsonUtil.json2List(getItems(), AutoScheduleConfigItem.class);
        }
        return result;
    }

    public List<AfterSaveConfigItem> getAfterSaveConfig() {
        List<AfterSaveConfigItem> result = new ArrayList<>();
        if (StringUtils.isNotEmpty(getAfterSave())) {
            result = JsonUtil.json2List(getAfterSave(), AfterSaveConfigItem.class);
        }
        return result;
    }


    @Data
    public static class AutoScheduleConfigItem {
        private List<String> performDept;
        private List<String> itemCodes;
        /**
         * 患者来源  门诊 、住院
         */
        private List<String> source;
        /**
         * 优先级 普通 、急诊
         */
        private List<String> priority;
    }

    @Data
    public static class AfterSaveConfigItem {
        private List<String> performDept;
        private List<String> examClass;
    }

    public static void main(String[] args) {
        String xx="[{\"examClass\":[\"检查\",\"CT\"],\"performDept\":[\"2AD01304006101\",\"2AD01305001103\"]}]";
        List<AfterSaveConfigItem> result = new ArrayList<>();
        if (StringUtils.isNotEmpty(xx)) {
            result = JsonUtil.json2List(xx, AfterSaveConfigItem.class);
        }
        System.out.println(result);
    }
}
